package controladores;

import java.util.ArrayList;
import java.util.List;

import modelo.Model;
import modelo.vista.LoteCompuestoView;
import modelo.vista.LoteSimpleView;
import modelo.vista.PropietarioView;

import org.jdesktop.observablecollections.ObservableCollections;

public class AdministrateLotesCompuestosControlador extends AbstractControlador {

	private Model model = Model.getInstance();
	private List<LoteCompuestoView> lotesCompuestosView =  ObservableCollections.observableList(new ArrayList<LoteCompuestoView>());
	private List<LoteSimpleView> lotesSimplesView =  ObservableCollections.observableList(new ArrayList<LoteSimpleView>());
	
	public AdministrateLotesCompuestosControlador() {
		super();
	}

	public List<LoteCompuestoView> getLotesCompuestosView() {
		return lotesCompuestosView;
	}
	
	public List<LoteSimpleView> getLotesSimplesView() {
		return lotesSimplesView;
	}

	
	public void altaLoteCompuesto(LoteCompuestoView sl) {
		sl.setLotes(lotesSimplesView);
		try {
			if (!model.existeLoteCompuesto(sl))
				model.altaLoteCompuesto(sl);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		lotesCompuestosView.remove(0);
	}

	public void bajaLote() {
		try {
			if (model.existeLoteCompuesto(lotesCompuestosView.get(0)))
				model.bajaLoteCompuesto(lotesCompuestosView.get(0));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		lotesCompuestosView.remove(0);
	}
	
	public LoteSimpleView buscarConNumero(int nrLote) {
		for (int i = 0; i < model.getLotes().size(); i++) {
			if (this.model.getLotes().get(i).getNroLote() == nrLote) {
				return (LoteSimpleView) model.getLotes().get(i).getView();
			}
		}
		return null;
	}

	public PropietarioView buscarPropietarioPorDNI(String text) {
		return model.buscarPropietarioPorDNI(text);
	}

	public void modificarLoteCompuesto() {
		try {
			if (model.existeLoteCompuesto(lotesCompuestosView.get(0)))
				model.modificarLoteCompuesto(lotesCompuestosView.get(0));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		lotesCompuestosView.remove(0);
	}
	
	public void agregarLoteSimple(int selectedIndex) {
		this.lotesCompuestosView.get(0).getLotes().add(this.lotesSimplesView.get(selectedIndex));	
	}

	public void sacarLoteSimple(int selectedIndex) {
		int nroLoteAComparar = this.lotesCompuestosView.get(0).getLotes().get(selectedIndex).getNroLote();
		if( nroLoteAComparar == this.lotesSimplesView.get(selectedIndex).getNroLote()){
			this.lotesSimplesView.remove(selectedIndex);
		}
		
	}

	public LoteCompuestoView buscarConNumeroLoteCompuesto(int parseInt) {
		return model.buscarLoteCompuesto(parseInt);
	}

	public void eliminarLoteCompuesto() {
		try {
			if(model.existeLoteCompuesto(this.lotesCompuestosView.get(0))){
				model.bajaLoteCompuesto(this.lotesCompuestosView.get(0));
				this.lotesCompuestosView.remove(0);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void agregarNuevoLoteCompuesto(int parseInt) {
		LoteCompuestoView nuevoLote = new LoteCompuestoView(parseInt);
		lotesCompuestosView.add(0, nuevoLote);
	}


}
